home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / mxlibs / mdss040a / midas.doc < prev    next >
Text File  |  1995-04-27  |  29KB  |  781 lines

  1.  
  2.  
  3.                                                                               
  4.  
  5.  
  6.                      MIDAS Sound System v0.40 revision A
  7.                      -----------------------------------
  8.  
  9.             Copyright 1995 Petteri Kangaslampi and Jarno Paananen
  10.  
  11.  
  12.  
  13.         MIDAS SOUND SYSTEM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  14.         EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES
  15.         OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
  16.         WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES
  17.         CAUSED BY THE USE OR INABILITY TO USE, OF MIDAS SOUND SYSTEM.
  18.  
  19.         MIDAS Sound System may only be used, distributed and modified under
  20.         the terms of the MIDAS Sound System license, LICENSE.TXT. By
  21.         continuing to use, modify or distribute MIDAS Sound System you
  22.         indicate that you have read the license and understand and accept it
  23.         fully. If you do not have the license or have problems understanding
  24.         it or fulfilling its requirements you must contact us.
  25.  
  26.         MIDAS Sound System may freely be distributed as long as no money is
  27.         charged for it, and no attempt is made to restrict further copying,
  28.         distribution and using of MIDAS Sound System. It may not be used in
  29.         any commercial applications, including shareware, and may not be
  30.         included as part of a commercial publication or software package.
  31.         Separate commercial licensing is available.
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.                                                                               
  65.  
  66.  
  67.  
  68. MIDAS Sound System                   Getting Started                    Page 2
  69.  
  70.  
  71. 1. Getting Started
  72.  
  73. ----------------------------------------------------------------------------
  74. 1.1. Foreword
  75. ----------------------------------------------------------------------------
  76.  
  77.         This is the third public version of MIDAS Sound System, and, as the
  78.         version number suggests, not fully finished. Most importantly, there
  79.         is very little documentation, apart from this file, which you should
  80.         read through before proceeding. Numerous examples have been added from
  81.         the previous version and the code has been made much cleaner.  Still
  82.         this release is, like the two previous ones, intended for experienced
  83.         programmers only.  The best source for learning to use MIDAS Sound
  84.         System is the source code, so take a good look at the example
  85.         programs, experiment with them and modify them.  Also the MIDAS Sound
  86.         System source code should be clean and readable and includes a lot of
  87.         information on how to use the various features of MIDAS Sound System
  88.         and how it works.
  89.  
  90. ----------------------------------------------------------------------------
  91. 1.2. Requirements
  92. ----------------------------------------------------------------------------
  93.  
  94.         MIDAS Sound System requires an Intel 80386 compatible processor, MS-
  95.         DOS 5.0 or above (untested below 5.0, might work). EMS memory is used
  96.         if found, and this decreases conventional memory requirements
  97.         dramatically, although at the expense of speed. To fully recompile
  98.         MIDAS Sound System you need Borland Turbo Assembler 4.0, Borland C 3.1
  99.         or Watcom C 10.0, and Borland Pascal 7 if you work in Pascal. Other C
  100.         compilers can be used fairly easily as well, at least other versions
  101.         of Borland and Watcom compilers. MIDAS Sound System v0.40 can be used
  102.         with any of those compilers alone, with a suitable linker, and
  103.         normally there should be no need to recompile the library.
  104.  
  105. ----------------------------------------------------------------------------
  106. 1.3. Compiling the examples
  107. ----------------------------------------------------------------------------
  108.  
  109. 1.3.1. Borland C
  110.  
  111.         The Borland C examples are in the C_EXP\ subdirectory. To compile them
  112.         you need the Borland C command-line compiler, bcc, Borland make and
  113.         Borland large model runtime libraries. You also need to edit the make
  114.         script bc_exp.mak to reflect your system settings, mainly the MIDAS
  115.         Sound System directory in the beginning of the file. After this run
  116.         "make -fbc_exp.mak" to compile the examples.
  117.  
  118. 1.3.2. Watcom C
  119.  
  120.         The Watcom C examples are in the C_EXP\ subdirectory, and are the same
  121.         as the Borland C examples except for the make script. To compile them
  122.         you need the Watcom 16-bit C compile and link utility, wcl, Watcom
  123.         make and Watcom large model runtime libraries. You also need to edit
  124.         the make script wc_exp.mak to reflect your system settings, mainly the
  125.         MIDAS Sound System directory in the beginning of the file. After this
  126.         run "wmake -u -f bc_exp.mak" to compile the examples.
  127.  
  128.  
  129.                                                                               
  130.  
  131.  
  132.  
  133. MIDAS Sound System                   Getting Started                    Page 3
  134.  
  135.  
  136.         Included in this version of MIDAS Sound System is also the full source
  137.         code for our The Party '94 intro competition entry, Live, in the
  138.         subdirectory LIVE\.  It is not meant to be an example of good demo
  139.         coding, but rather an example on how to use MIDAS Sound System,
  140.         including music synchronization and screen synchronized timer. Live
  141.         can be compiled using Watcom C16 and Borland Turbo Assembler. Edit
  142.         "makefile" and "live.wlk" to correspond to your system, and compile
  143.         using "wmake -u".
  144.  
  145. 1.3.3. Borland Pascal
  146.  
  147.         The Borland Pascal examples are in the PAS_EXP\ subdirectory. To
  148.         compile them you need Borland Pascal 7 command line compiler, bpc,
  149.         Borland make and the standard BP7 units. You need to copy the files
  150.         from the correct subdirectory to the main MIDAS directory before
  151.         compiling. You also need to edit the make scripts rm_exp.mak and
  152.         pm_exp.mak to reflect your system settings, mainly the MIDAS Sound
  153.         System directory. After this run "make -frm_exp.mak" to compile the
  154.         real mode or "make -fpm_exp.mak" the protected mode examples.
  155.  
  156. 1.3.4. Borland Turbo Assembler
  157.  
  158.         The Assembler examples are in the ASM_EXP\ subdirectory. To compile
  159.         them you need Borland Turbo Assembler, probably version 4.0, Borland
  160.         make and Borland Turbo Link. You also need to edit the make script
  161.         makefile to reflect your system settings, mainly the MIDAS Sound
  162.         System directory. After this run "make" to compile the examples.
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.                                                                               
  195.  
  196.  
  197.  
  198. MIDAS Sound System               Using MIDAS Sound System               Page 4
  199.  
  200.  
  201. 2. Using MIDAS Sound System
  202.  
  203. ----------------------------------------------------------------------------
  204. 2.1. MIDAS Sound System Libraries
  205. ----------------------------------------------------------------------------
  206.  
  207.         Precompiled libraries are included in this release for Borland C,
  208.         Watcom C16, Borland Pascal 7 (real and protected mode) and Borland
  209.         Turbo Assembler. C and Assembler libraries are included in the MIDAS
  210.         Sound System main directory, and unit and object files for the Pascal
  211.         version are in different subdirectories.
  212.  
  213.         We have now also included cut-down versions of the MIDAS libraries.
  214.         They are intended to be used in small applications such as demos, for
  215.         playing .MM modules only (see below). From the cut-down libraries all
  216.         module loading routines are removed as well as configuration load/save
  217.         routines and some other unnecessary routines to decrease the size of
  218.         MIDAS Sound System. Further space can be saved by recompiling the
  219.         libraries with no stereo support (define NOSTEREO) or by removing
  220.         unnecessary sound card support.
  221.  
  222.         The libraries included are:
  223.  
  224.         midasbc.lib     Borland C/C++ full library
  225.         midaswc.lib     Borland C/C++ cut-down library
  226.         midaswc.lib     Watcom C/C++ 16 full library
  227.         mcutwc.lib      Watcom C/C++ 16 cut-down library
  228.         midasasm.lib    Turbo Assembler full library
  229.         mcutasm.lib     Turbo Assembler cut-down library
  230.  
  231.         To use the Borland Pascal version, copy the units and object files
  232.         from the correct subdirectory to the main MIDAS directory. The
  233.         directories are:
  234.  
  235.         BPFULLRM\       Borland Pascal Real Mode full version
  236.         BPCUTRM\        Borland Pascal Real Mode cut-down version
  237.         BPFULLPM\       Borland Pascal Protected Mode full version
  238.         BPCUTPM\        Borland Pascal Protected Mode cut-down version
  239.  
  240. ----------------------------------------------------------------------------
  241. 2.2. Compiling MIDAS Sound System
  242. ----------------------------------------------------------------------------
  243.  
  244.         The full source code for MIDAS Sound System is included in the SRC\
  245.         subdirectory. You can use it to recompile any version of the
  246.         libraries.  The source code subdirectory also includes make scripts
  247.         for compiling all the libraries, look for files with extension ".mak".
  248.         Note that you will need to modify the make scripts to get them work,
  249.         possibly quite extensively if you are not using exactly the same
  250.         compilers as we do.  The make scripts also contain information on how
  251.         to compile the cut-down version of the libraries. In general,
  252.         recompiling MIDAS may be difficult simple and we suggest it only for
  253.         experienced programmers.
  254.  
  255.         Note also that if you only have modified a part of the MIDAS Sound
  256.         System library, you can extract the other modules from the suitable
  257.  
  258.  
  259.                                                                               
  260.  
  261.  
  262.  
  263. MIDAS Sound System               Using MIDAS Sound System               Page 5
  264.  
  265.  
  266.         library before recompiling. For example, if you have modified from the
  267.         assembler library mmem.asm and do not have a C compiler, you can
  268.         extract all object modules from midasasm.lib, copy them to the source
  269.         code directory, delete mmem.asm and run "make -fmasmlib.mak". A
  270.         similar procedure can be used with all the libraries. Likewise, you
  271.         can copy all object files from a suitable Borland Pascal directory if
  272.         you are working in Pascal.
  273.  
  274. ----------------------------------------------------------------------------
  275. 2.3. .MM Modules
  276. ----------------------------------------------------------------------------
  277.  
  278.         This version of MIDAS Sound System includes support for .MM modules.
  279.         The .MM format is basically a sequence of MIDAS Sound System internal
  280.         structures dumped one after another on the disk, and is therefore very
  281.         easy to handle. To play .MM modules you simply have to load the whole
  282.         module as one big chunk to memory or link it to the executable and
  283.         call midasPrepareMM() with a pointer to the module and the Module
  284.         Player used. After this the module can be handled as any module loaded
  285.         with midasLoadModule(). The idea behind this is to be able to remove
  286.         all module loading routines and file handling, resulting in smaller
  287.         executables. You can convert any Protracker, Scream Tracker 3 or
  288.         Multitracker module that MIDAS handles to a .MM module using the
  289.         enclosed MOD2MM converter. To fully benefit from using .MM modules you
  290.         should use the cut-down versions of the MIDAS libraries.
  291.  
  292.         Note that midasPrepareMM() does not work with .MM files over 64kb in
  293.         protected mode, and you may have problems loading over 64kb files in
  294.         Borland Pascal real mode as well. The file handling in the Borland
  295.         Pascal libraries does not support reading or writing blocks over 64kb
  296.         as such memory blocks can not be allocated under Borland Pascal.
  297.  
  298. ----------------------------------------------------------------------------
  299. 2.4. Assembly Language Considerations
  300. ----------------------------------------------------------------------------
  301.  
  302.         For the first time MIDAS Sound System now supports programming in pure
  303.         assembly language. The examples in the ASM_EXP\ directory should be
  304.         enough to show you how to use the basic features of MIDAS Sound System
  305.         in assembler. You can also look at the C and Pascal examples, as all
  306.         the features are also available in assembler. There are a few special
  307.         points worth mentioning about using MIDAS Sound System with assembler,
  308.         however.
  309.  
  310.         All MIDAS Sound System include files assume that Turbo Assembler is in
  311.         IDEAL mode. Therefore you must keep the compiler in IDEAL mode at
  312.         least during the inclusion. See the example source code for an example
  313.         of a proper start of a program file.
  314.  
  315.         MIDAS Sound System requires that the MIDAS Startup code is run at the
  316.         beginning of the program. It reallocates the program memory block so
  317.         that DOS memory allocation can be used and transfers control to a
  318.         label "main", which must be global. If your program requires control
  319.         at startup you must rewrite the MIDAS startup code, mstartup.asm.
  320.         mstartup.obj must be the first object file passed to the linker to
  321.         ensure it will be used as startup code.
  322.  
  323.  
  324.                                                                               
  325.  
  326.  
  327.  
  328. MIDAS Sound System               Using MIDAS Sound System               Page 6
  329.  
  330.  
  331.         MIDAS Sound System for assembler is compiled in "MODEL LARGE,C" and
  332.         uses C calling convention for all parameter passing. Because of this
  333.         you should keep all of your own code that uses MIDAS in "MODEL
  334.         LARGE,C" as well, and use the Turbo Assembler extended calling syntax
  335.         to pass the parameters. Take a look at the examples to see how this is
  336.         done. In general, the format of a calling sequence is:
  337.  
  338.                 call Routine LANG, argument1, argument2, argument 3 ...
  339.  
  340.         Pointers that are in registers should be passed as a segment offset
  341.         pair as in "ds si", and you must ensure all parameters are of correct
  342.         size (words or doublewords).
  343.  
  344.         As mentioned above, MIDAS Sound System uses the DOS memory allocation
  345.         routines for its memory allocation. If this does not suit you, you can
  346.         modify the memAlloc() and memFree() routines in mmem.asm as you wish.
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.                                                                               
  390.  
  391.  
  392.  
  393. MIDAS Sound System                   Advanced Topics                    Page 7
  394.  
  395.  
  396. 3. Advanced Topics
  397.  
  398. ----------------------------------------------------------------------------
  399. 3.1. Timer Screen Synchronization
  400. ----------------------------------------------------------------------------
  401.  
  402. 3.1.1. Introduction
  403.  
  404.         The MIDAS Sound System timer includes built-in support for screen
  405.         synchronization. This means that you can program the timer to call
  406.         your own routines every frame, more exactly immediately before the
  407.         Vertical Retrace, immediately after the Vertical Retrace has started
  408.         and later during the Vertical Retrace. This enables you to synchronize
  409.         your program to the screen update to get smooth animation, which
  410.         otherwise would not be possible with a music system playing in the
  411.         background.  The routines can also be used for changing VGA hardware
  412.         registers, such as display start address and scrolling, in correct
  413.         moments, for triple buffering and for compensating for different
  414.         machine speeds.
  415.  
  416. 3.1.2. Using Screen Synchronization
  417.  
  418.         If you wish to use timer screen synchronization, use the procedure
  419.         outlined below:
  420.  
  421.         1. BEFORE MIDAS Sound System is initialized, set up the display mode
  422.         you are intending to use and get the timer screen synchronization
  423.         value corresponding to that display mode using tmrGetScrSync(). If you
  424.         are using several display modes with different refresh rates (in
  425.         practise, different vertical resolutions, although in standard VGA
  426.         only 240 or 480 scan line modes have different refresh rates) you must
  427.         activate each of them in turn and get the synchronization values for
  428.         each of them.
  429.  
  430.         2. Initialize MIDAS Sound System etc.
  431.  
  432.         3. Set up the display mode
  433.  
  434.         4. When you need timer screen synchronization, start it using the
  435.         function tmrSyncScr(), passing as arguments the timer screen
  436.         synchronization value from step 1 and pointers to the routines you
  437.         wish the timer to call. If you do not require support for some
  438.         routine, pass a NULL pointer (dword 0) instead.
  439.  
  440.         5. When timer screen synchronization is no longer required, stop it
  441.         using tmrStopScrSync().
  442.  
  443.         If you change the display mode to one with a different refresh rate,
  444.         you must first stop the screen synchronization, change the display
  445.         mode, and after that re-synchronize the timer. Please note that
  446.         synchronizing the timer to the screen update takes a while, and as the
  447.         timer is disabled for that time it may introduce breaks in the music.
  448.         Therefore we suggest you handle the timer screen synchronization
  449.         before you start playing music.
  450.  
  451.  
  452.  
  453.  
  454.                                                                               
  455.  
  456.  
  457.  
  458. MIDAS Sound System                   Advanced Topics                    Page 8
  459.  
  460.  
  461. 3.1.3. Timer Screen Synchronized Routines
  462.  
  463.         tmrSyncScr() takes as arguments pointers to three separate functions,
  464.         preVR(), immVR() and inVR(), which will be called at different points
  465.         during the screen timer interrupt. Following is a brief description of
  466.         each routine and what it is intended for.
  467.  
  468.         preVR() is called immediately before Vertical Retrace, and must be as
  469.         short as possible to avoid timer synchronization problems. It is
  470.         intended mainly for changing the display start address register and
  471.         updating counters.
  472.  
  473.         immVR() is called immediately after Vertical Retrace has started, and
  474.         must be as short as possible to avoid timer synchronization problems.
  475.         It is intended mainly for changing VGA hardware registers that have to
  476.         be modified during Vertical Retrace, such as pixel panning.
  477.  
  478.         inVR() is called after immVR(), and may take a longer time if
  479.         necessary. However, note that even though spending a long time in
  480.         inVR() does not induce timer synchronization problems, it may cause
  481.         problems in music tempo if it takes a too long time. Furthermore, the
  482.         time spent in inVR() must not exceed one frame. inVR() is mainly
  483.         intended for changing the palette or updating small portions of
  484.         screen, such as drawing new characters to a start address scroller.
  485.  
  486. 3.1.4. Waiting for Vertical Retrace
  487.  
  488.         When synchronizing your program to the screen update, instead of
  489.         waiting for Vertical Retrace using the VGA hardware registers you must
  490.         use the screen synchronized timer for this. This is because the music
  491.         playing interrupt may occur just during the Vertical Retrace, causing
  492.         you to miss one frame completely. To use the timer for this, set up a
  493.         preVR() routine that increments a frame counter, and instead of
  494.         waiting for Vertical Retrace bit wait for the frame counter to change.
  495.         For example:
  496.  
  497.         preVR:
  498.                 frameCount = frameCount + 1
  499.  
  500.         main:
  501.                 ...
  502.                 tmrSyncScr(scrSync, &preVR, NULL, NULL)
  503.                 ...
  504.                 oldCnt = frameCount
  505.                 while oldCnt == frameCount;
  506.  
  507.         Note that you must declare frameCount as "volatile" (in C) or
  508.         otherwise ensure that the compiler will not optimize the frame waiting
  509.         loop to an infinite one, waiting for a register variable to change.
  510.  
  511. 3.1.5. Speed Compensation
  512.  
  513.         The timer screen synchronization can also be used to compensate for
  514.         different speeds on different computers. The following pseudo code
  515.         should illustrate the point:
  516.  
  517.  
  518.  
  519.                                                                               
  520.  
  521.  
  522.  
  523. MIDAS Sound System                   Advanced Topics                    Page 9
  524.  
  525.  
  526.         main loop:
  527.                 Wait for frameCount to change
  528.                 skipFrames = oldFrameCount - frameCount
  529.                 oldFrameCount = frameCount
  530.                 for i = 1 to skipFrames do
  531.                         MoveEverything
  532.                 DrawEverything
  533.  
  534. ----------------------------------------------------------------------------
  535. 3.2. Reading Music Playing Information
  536. ----------------------------------------------------------------------------
  537.  
  538. 3.2.1. Introduction
  539.  
  540.         In many applications information about the current status of the music
  541.         player is needed. This includes, for example, music synchronization in
  542.         demos and playing several modules after each other. This information
  543.         can be read from the Module Players, using the GetInformation()
  544.         function. GetInformation() takes as an argument a pointer to a
  545.         variable where it will store a pointer to the information structure.
  546.         The information structure is of type mpInformation, which can be found
  547.         in mplayer.h, mplayer.inc and mplayer.pas. mpInformation in turn
  548.         contains a pointer to the channel data structures, which are of type
  549.         mpChanInfo.
  550.  
  551.         The members of the mpInformation and mpChanInfo structures should be
  552.         self-explanatory, and are also documented in the header files.
  553.  
  554. 3.2.2. Examples
  555.  
  556.         Borland or Watcom C:
  557.  
  558.                 mpInformation   *info;
  559.                  ...
  560.                 midasMP->GetInformation(&info);
  561.                 printf(
  562.                  ...
  563.  
  564.         Borland Pascal:
  565.  
  566.                 var
  567.                     info : PmpInformation;
  568.                     MP : PModulePlayer;
  569.                  ...
  570.                 MP := midasMP;
  571.                 MP^.GetInformation(@info);
  572.                 WriteLn(info^.pos);
  573.  
  574.         Assembler:
  575.                 info    DD      ?
  576.                  ...
  577.                 les     bx,[midasMP]
  578.                 call    [dword es:bx+ModulePlayer.GetInformation] LANG, \
  579.                         seg info offset info
  580.                 les     bx,[info]
  581.                 mov     al,[es:bx+mpInformation.pos]
  582.  
  583.  
  584.                                                                               
  585.  
  586.  
  587.  
  588. MIDAS Sound System                 Contact Information                 Page 10
  589.  
  590.  
  591. 4. Contact Information
  592.  
  593.         If you have any questions, comments or bugs reports, or just want to
  594.         share some thoughts about programming in general, please contact us.
  595.         We hope that you understand that supporting a free product is not
  596.         always very motivating, especially under heavy pressure from outside
  597.         world like school, and so without any feedback from you the MIDAS
  598.         project will probably not have a long life. So, whether you like MIDAS
  599.         or not, please let us know. And if you find MIDAS useful and use it in
  600.         your programs, a souvenir postcard from your home city would be
  601.         nice...
  602.  
  603.         However, please remember: If you use MIDAS Sound System in a program
  604.         you MUST mention it in the program and documentation.
  605.  
  606.         e-mail: (preferred)
  607.                 pekangas@sci.fi (Petteri Kangaslampi)
  608.                 jpaana@kauhajoki.fi (Jarno Paananen)
  609.  
  610.         voice:
  611.                 +358-31-3646764 (Petteri Kangaslampi)
  612.                 +358-31-3422147 (Jarno Paananen)
  613.                 Please restrict your calls to 10.00 - 21.30, Finnish time.
  614.  
  615.         normal mail:
  616.                 Petteri Kangaslampi
  617.                 Simeoninkuja 4
  618.                 FIN-36240 Kangasala 4
  619.                 Finland
  620.                 Europe
  621.  
  622.                 Jarno Paananen
  623.                 Puskalantie 6
  624.                 FIN-37120 Nokia
  625.                 Finland
  626.                 Europe
  627.  
  628.  
  629.         If you have a question about a particular subject, here is a list of
  630.         which of us did what. Naturally you can contact either one of us - we
  631.         will forward the messages as necessary.
  632.  
  633.         Petteri Kangaslampi:
  634.                 * General questions about MIDAS
  635.                 * MIDAS architecture, including error handling and memory
  636.                   allocation
  637.                 * Pascal version
  638.                 * * Pro Audio Spectrum, Windows Sound System and Sound Blaster
  639.                   Sound Devices
  640.                 * Mixing routines (DSM).
  641.  
  642.         Jarno Paananen:
  643.                 * Gravis UltraSound Sound Device
  644.                 * All three Module Players
  645.  
  646.  
  647.  
  648.  
  649.                                                                               
  650.  
  651.  
  652.  
  653. MIDAS Sound System                 Distribution Sites                  Page 11
  654.  
  655.  
  656. 5. Distribution Sites
  657.  
  658.         The latest MIDAS Sound System and MIDAS Module Player should always be
  659.         available on these fine BBSes:
  660.  
  661.         WarmBoot BBS            +55-194-265112
  662.                 Sysop: Carlos Henrique Cantu (WarmBooter)
  663.  
  664.         Moir Brandts Honk       #1: +31-(0)70-3461215 USR/DS 14.4k
  665.                                 #2: +31-(0)70-3457929 ZyXEL 19.2k
  666.                                 #3: +31-(0)70-3452981 LineLink 14.4k
  667.                 Sysop: Hugo Voerman
  668.  
  669.         The Pantheon            703-378-3553 (changing soon?)
  670.                 Sysops: Farmicus [CiA], Lord Soth [iCE], and Shaggy [iCE
  671.                 Senior Staff]
  672.  
  673.         ULTiMAT BBS             +32-2-3755651
  674.                 Sysops: Cobra, Access
  675.  
  676.         Sourcery BBS            +46-8-7674313
  677.                 Sysop: Martin Alexanderson
  678.                 Fidonet: 2:201/406, Freq.
  679.  
  680.         If you are supposed to be a MIDAS distribution site, but are not on
  681.         this list, please contact us!
  682.  
  683.         MIDAS and MIDP can also be found in Internet. Whenever a new version
  684.         is released, we will try to upload it to at least ftp.cdrom.com,
  685.         /pub/msdos/demos/incoming/music and x2ftp.oulu.fi.
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.                                                                               
  715.  
  716.  
  717.  
  718. MIDAS Sound System               'Thank You's and Hellos               Page 12
  719.  
  720.  
  721. 6. 'Thank You's and Hellos
  722.  
  723.         Otto Chrons: Thanks for the sound cards and programming information
  724.         and optimization and debugging tips. Also special thanks for making
  725.         DSMI so that we could know beforehand what mistakes to avoid.
  726.  
  727.         Teemu Kalvas: Thanks for testing all the zillions of buggy versions of
  728.         MIDAS. Without you MIDAS would not be nearly as stable as it is now.
  729.         Also thanks for your ideas and thoughtful feedback and numerous
  730.         optimization and general design ideas.
  731.  
  732.         Ben Cooley: Thanks for porting MIDAS Sound System to Windows and sorry
  733.         we have not kept in touch with you. Good luck with porting this
  734.         version.
  735.  
  736.         Stratos, Legend, Yolk etc.: Thanks for composing the way you do.
  737.  
  738.         Everybody who has offered us feedback regarding MIDAS Sound System:
  739.         Thank you, and please keep the bug reports coming.
  740.  
  741.         MIDAS Sound System Distribution Site sysops: Thanks for your support,
  742.         and please excuse us for forgetting some of you.
  743.  
  744.         Everybody at class 3K at Tampereen lyseon lukio: Thanks for putting up
  745.         with us and being such nice people. IB has been painful enough this
  746.         way, not to think what it might been with some other classmates.
  747.  
  748.         Plus some traditional hi-hos to:
  749.                 Tomi Henttonen
  750.                 Olli Hinkka
  751.                 Kari-Pekka Koljonen
  752.                 jmagic (forget Phantom's GUS player!)
  753.                 All Virtual Visions members
  754.                 All Parallax members
  755.                 @ (stupid group name BTW)
  756.                 CNCD
  757.                 Complex
  758.                 Inapt
  759.                 Prime
  760.                 Virtual Dreams
  761.                 Bloodhouse
  762.                 Terramarque Software
  763.                 Bart, Dean, Delorean, Destop, Dizzy, Dr. Jekyll, Dr. Skull,
  764.                 Dweezil, Eksec, Fraction, Groo, Hannibal, Heatbeat, Jugi, Vesa
  765.                 Karvonen, Peter Kunath, Marley, Murk, Pauli Porkka, Henryk
  766.                 Richter, Shayera, Stalker, Tsunami, WDO
  767.  
  768.                 And everybody we forgot.
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.                                                                               
  780.  
  781.